﻿#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include <sys/stat.h>
#include <sys/types.h>



#include "log_manager.h"

/*********************************************************/


/*常量****************************************************/
const char* ConfigText =
"[global]\n"
"strict init = true\n"
"buffer min = 1024\n"
"buffer max = 2048\n"
"#日志访问权限,600 只允许当前用户访问\n"
"file perms = 600\n"
"[formats]\n"
"simple	= \"%d.%-8.8us %-5V [%-8.8p.%-8.8t %F %L] %m%n\"\n"
"simple1= \"%m%n\"\n"
"[rules]\n"
"test_cat.warn		>stderr;simple1\n"
"test_cat.ERROR	\"./logs/test.txt\",1M * 3 ~ \"./logs/test.txt.#r\";simple\n";


//优先级从低到高 debug info notice warn error fatal  debug大于等于debug的优先级都能给通过debug输出。


/*********************************************************/
static zlog_category_t * logHandler_m = NULL;
static int DetectConfigFile(const char *File);

/*****************************************************************************
 函 数 名  : LogMgr.LogMgr
 功能描述  : 日志模块初始化
 输入参数  : 无
 输出参数  : 无
 返 回 值  :

 修改历史      :
  1.日    期   : 2012年12月19日 星期三
    作    者   : fensjoy
    修改内容   : 新生成函数

*****************************************************************************/
zlog_category_t * Init_zlog()
{
	//DetectConfigFile(LOG_CONFIG);

	zlog_init(LOG_CONFIG);
    logHandler_m = zlog_get_category(LOG_CAT);
	if (!logHandler_m)
    {
		printf("%s in Init_zlog, get cat fail! line = %d\n",PRO_NAME, __LINE__);
		zlog_fini();
        remove(LOG_CONFIG);
		exit(-1);
	}
	return logHandler_m;
};

/*****************************************************************************
 函 数 名  : DetectConfigFile
 功能描述  : 检测日志模块的配置文件是否存在，不存在则创建
 输入参数  : const char *File
 输出参数  : 无
 返 回 值  : static

 修改历史      :
  1.日    期   : 2012年12月20日 星期四
    作    者   : fensjoy
    修改内容   : 新生成函数

*****************************************************************************/
static int DetectConfigFile(const char *File)
{
	//FILE *fp  = NULL;
	//int iRet = 0;
	//DIR *log_p = NULL;
	//char *cmd_buf = NULL;

	///*判断日志文件保存目录是否存在，不存在则创建*/
	//log_p = opendir(LOG_PATH);
	//if ( log_p == NULL )
	//{
	//	printf("%s in DetectConfigFile, the log dir is not exist, now creat: %s!\n", PRO_NAME,LOG_PATH);

	//	cmd_buf = new char[64];

	//	printf("%s in DetectConfigFile, the log dir is not exist, now creat!\n", PRO_NAME);
	//	snprintf(cmd_buf, 64, "mkdir -p %s &", LOG_PATH);
	//	iRet = system(cmd_buf);

	//	delete [] cmd_buf;

	//}
	//else
	//{
	//	closedir(log_p);
	//}

	//if ( access(File, F_OK) != 0 )
	//{
	//	printf("%s log config file not exist,now creat!\n", PRO_NAME);
	//	fp = fopen(File, "w+");
	//	if(fp == NULL)
	//	{
	//		perror("#[db]: in DetectConfigFile, fopen config file error!");
	//		return -1;
	//	}
	//	iRet = fwrite(ConfigText, 1, strlen(ConfigText), fp);
	//	if ( iRet < 0 )
	//	{
	//		perror("#[para]: in DetectConfigFile, fwrite error!");
	//		fclose(fp);
	//		return -1;
	//	}

	//	fclose(fp);
	//}


	//return 0;
}

/*****************************************************************************
 函 数 名  : getZlogHandler
 功能描述  : 获取zlog日志句柄
 输入参数  : 无
 输出参数  : 无
 返 回 值  : zlog_category_t

 修改历史      :
  1.日    期   : 2014年1月24日 星期五
    作    者   : fensjoy
    修改内容   : 新生成函数

*****************************************************************************/
zlog_category_t *  getZlogHandler()
{
    if ( NULL == logHandler_m )
	{
		logHandler_m = Init_zlog();
	}

	return logHandler_m;
}




